#!/usr/bin/env bash
set -euo pipefail

# ==========================================================
# 🗑️  NVM Uninstaller for macOS/Linux
# Author: 志辉 <iamzhihuix@gmail.com>
# Repository: https://github.com/iamzhihuix/nvm-install-cn
# ----------------------------------------------------------
# 功能：
#   - 删除 nvm 目录
#   - 清理 shell 配置文件中的环境变量
#   - 清理 npm 全局镜像配置
# ==========================================================

# -------- 工具函数 --------
info() { printf "\033[36mℹ %s\033[0m\n" "$*"; }
ok()   { printf "\033[32m✅ %s\033[0m\n" "$*"; }
warn() { printf "\033[33m⚠️  %s\033[0m\n" "$*"; }
err()  { printf "\033[31m❌ %s\033[0m\n" "$*" >&2; }

# -------- 确认卸载 --------
cat <<'EOF'

========================================
⚠️  NVM 卸载程序
========================================
此操作将：
  1. 删除 ~/.nvm 目录（包含所有已安装的 Node 版本）
  2. 清理 shell 配置文件中的 nvm 相关配置
  3. 清理 npm 镜像配置

EOF

read -p "确认卸载？(yes/no): " -r
echo
if [[ ! "$REPLY" =~ ^[Yy][Ee][Ss]$ ]]; then
  info "已取消卸载。"
  exit 0
fi

# -------- 检测 Shell 配置文件 --------
if [[ -n "${BASH_VERSION:-}" ]]; then
  RC_FILE="$HOME/.bashrc"
elif [[ -n "${ZSH_VERSION:-}" ]]; then
  RC_FILE="$HOME/.zshrc"
else
  RC_FILE="$HOME/.bashrc"
fi

[[ -f "$RC_FILE" ]] || RC_FILE="$HOME/.profile"
info "检测到配置文件：$RC_FILE"

# -------- 删除 nvm 目录 --------
NVM_DIR="${NVM_DIR:-$HOME/.nvm}"

if [[ -d "$NVM_DIR" ]]; then
  info "删除 nvm 目录：$NVM_DIR"
  rm -rf "$NVM_DIR"
  ok "nvm 目录已删除"
else
  warn "未找到 nvm 目录：$NVM_DIR"
fi

# -------- 清理配置文件 --------
if [[ -f "$RC_FILE" ]]; then
  info "清理配置文件：$RC_FILE"
  
  # 创建备份
  cp "$RC_FILE" "${RC_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
  ok "已备份到：${RC_FILE}.backup.*"
  
  # 移除 nvm 相关配置（兼容 macOS 和 Linux）
  if [[ "$(uname)" == "Darwin" ]]; then
    # macOS 需要指定备份后缀
    sed -i '' '/export NVM_DIR/d' "$RC_FILE"
    sed -i '' '/nvm\.sh/d' "$RC_FILE"
    sed -i '' '/NVM_NODEJS_ORG_MIRROR/d' "$RC_FILE"
    sed -i '' '/npm_config_registry/d' "$RC_FILE"
    sed -i '' '/SASS_BINARY_SITE/d' "$RC_FILE"
    sed -i '' '/ELECTRON_MIRROR/d' "$RC_FILE"
    sed -i '' '/PUPPETEER_DOWNLOAD_HOST/d' "$RC_FILE"
  else
    # Linux
    sed -i '/export NVM_DIR/d' "$RC_FILE"
    sed -i '/nvm\.sh/d' "$RC_FILE"
    sed -i '/NVM_NODEJS_ORG_MIRROR/d' "$RC_FILE"
    sed -i '/npm_config_registry/d' "$RC_FILE"
    sed -i '/SASS_BINARY_SITE/d' "$RC_FILE"
    sed -i '/ELECTRON_MIRROR/d' "$RC_FILE"
    sed -i '/PUPPETEER_DOWNLOAD_HOST/d' "$RC_FILE"
  fi
  
  ok "配置文件已清理"
else
  warn "配置文件不存在：$RC_FILE"
fi

# -------- 清理 npm 全局配置 --------
if command -v npm >/dev/null 2>&1; then
  info "清理 npm 全局镜像配置..."
  npm config delete registry 2>/dev/null || true
  ok "npm 配置已清理"
fi

# -------- 完成 --------
cat <<'EOF'

========================================
✅ 卸载完成
----------------------------------------
已清理的内容：
  ✓ ~/.nvm 目录及所有 Node 版本
  ✓ shell 配置文件中的环境变量
  ✓ npm 镜像配置

注意事项：
  • 配置文件已自动备份（.backup.*）
  • 请重启终端或执行以下命令使配置生效：
    source ~/.zshrc  或  source ~/.bashrc
  • 如需重新安装，请访问：
    https://github.com/iamzhihuix/nvm-install-cn
========================================

EOF

ok "Done."

# 提示重启 shell
info "正在重启 shell 以应用更改..."
sleep 2
exec "$SHELL" -l

